// 1.引入
import Vue from "vue"
import axios from "axios"
import qs from "querystring"
import { errorAlert } from "../utils/alert"
import store from "../store"
import router from "../router"

// 2.环境配置
//开发环境
if (process.env.NODE_ENV == "development") {
    Vue.prototype.$pre = "http://localhost:3000"
}
//生产环境
if (process.env.NODE_ENV == "production") {
    Vue.prototype.$pre = ""
}

// 3.请求拦截
axios.interceptors.request.use(config => {
    if (config.url !== "/api/userlogin") {
        config.headers.authorization = store.state.info.token
    }
    return config
})


// 4.响应拦截
axios.interceptors.response.use(res => {
        // 统一打印
        console.group("本次请求地址：" + res.config.url)
        console.log(res);
        console.groupEnd()

        //统一处理失败
        if (res.data.code !== 200) {
            errorAlert(res.data.msg)
        }
        // 4.响应拦截加掉线处理
        if (res.data.msg == "登录已过期或访问权限受限") {
            //清除vuex和本地存储的数据
            store.dispatch("changeInfo", {})

            //跳转页面
            router.replace("/login")
        }

        return res;
    })
    //get 
    /**
     * get用来发起get请求的
     * url:请求地址
     * params:请求参数 默认是{}
     * 案例：get("/api/login",{phone:"1",password:"12313"}).then()
     */
export const get = (url, params = {}) => {
        return axios({
            url,
            method: "get",
            params
        })
    }
    /**
     * post用来发起post请求
     * url:请求地址
     * params:请求参数 默认{}
     * isFile:是否有文件 true：有文件，false就是没有文件 默认是false
     * 案例：post("/api/login",{phone:"1"},true).then(res=>{})
     */
export const post = (url, params = {}, isFile = false) => {
    let data = null
    if (isFile) {
        //有文件
        data = new FormData()
        for (let i in params) {
            data.append(i, params[i])
        }
    } else {
        //无文件
        data = qs.stringify(params)
    }
    return axios({
        url,
        method: "post",
        data
    })
}